package com.bx.implatform.portal.entity;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "工作消息对象")
public class MessageEntity {

    /**
     * 接收者的userId，最⼤数量500
     */
    @Schema(description = "接收者的userIdList，最⼤数量100,userldList和deptldList 必须有一个有值")
    private List<String> userIdList;

    /**
     * 接收者的deptId，最⼤数量500
     */
    @Schema(description = "接收者是部门ID时，包括子部门下所有的用户，userldList和deptldList 必须有一个有值")
    private List<String> deptIdList;

    /**
     * 消息类型:"text",文本消息，"markdown",markdown消息,"action_card",卡片消息
     */
    @Schema(description = "消息类型:'text',文本消息，'markdown',markdown消息,'action_card',卡片消息")
    private String msgType;

    /**
     * text消息对象
     */
    @Schema(description = "text消息对象")
    private Text text;

    /**
     * markdown消息对象
     */
    @Schema(description = "markdown消息对象")
    private Markdown markdown;

    /**
     * 卡片消息对象
     */
    @Schema(description = "卡片消息对象")
    private ActionCard actionCard;


    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Schema(description = "文本消息")
    public static class Text {
        /**
         * 消息内容
         */
        @Schema(description = "消息内容")
        private String content;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Schema(description = "markdown消息")
    public static class Markdown {
        /**
         * markdown消息内容
         */
        @Schema(description = "markdown消息标题")
        private String title;
        /**
         * markdown消息内容
         */
        @Schema(description = "markdown消息内容,最大不超过5000字符")
        private String text;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Schema(description = "卡片消息")
    public static class ActionCard {
        /**
         * 标题
         */
        @Schema(description = "首屏会话透出的展示内容")
        private String title;

        /**
         * markdown消息内容
         */
        @Schema(description = "消息内容,支持markdown格式,建议1000字符以内")
        private String markdown;

        /**
         * 标题
         */
        @Schema(description = "最长20的字符,必须与singleUrl同时设置")
        private String singleTitle;

        /**
         * 跳转URL
         */
        @Schema(description = "点击消息跳转的URL，最长500字符")
        private String singleUrl;

    }


}
